import axios from 'axios';
//引入自定义的服务器地址
import host from './env.js';
import { ElMessage } from 'element-plus'
import {getToken} from "./session.js"
//创建请求示例
const instance = axios.create({
  baseURL: host,//服务器地址
  timeout: 5000//5s超时时间
})

// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    // 2xx 范围内的状态码都会出发该函数
    // 对响应数据做些什么
    if (response.status == 200) {
      //获取接口数据
      let rs = response.data;
      if (rs.code == 200) {
         //将rs封装成promise对象返回
      return Promise.resolve(rs);
      }
      //不正常 弹窗提示错误信息
      ElMessage.error(rs.msg)
    }
    return Promise.resolve({});
  }, function (error) {
    // 超出2xx范围内的状态码都会出发该函数
    //对响应数据做些什么
    return Promise.reject(error);
  });

//添加请求拦截器
axios.interceptors.request.use(
  function (config) {
    //在发送请求前做些什么
    //添加token请求头
    config.headers["x-token"] = getToken();
    return config;
  }, function (error) {
    //对请求错误做些什么
    return Promise.reject(error);
  })


//对外暴露的请求方法
export default {
  /**
   * get请求
   * @param {*} url  接口的相对地址
   * @param {*} params 请求的参数是一个对象，请求时会将对象中的属性拼接成字符串到地址栏上
   * @returns 请求的promise对象
   */
  get(url, params) {
    return instance.get(url, {
      params
    })
  },
  /**
   * post请求
   * @param {*} url 接口的相对地址 
   * @param {*} data 请求的数据
   */
  post(url, data) {
    return instance.post(url, data);
  },

  put(url, data) {
    return instance.put(url, data);
  },

  delete(url, params) {
    return instance.delete(url, {
      params
    })
  }

}
